package com.haojin.java;

import org.junit.Test;

/**
 * @author .29.
 * @create 2022-04-01 21:31
 */
public class StringMethod {

    /*
  替换：
    String replace(char oldChar,char newChar):返回一个新的字符串，它是通过
        newChar替换此字符串中出现的所有oldChar得到的
    String replace(CharSequence target,CharSequence replacement):
        使用指定的字面值替换序列日换此字符串所匹配字面值目标序列的子字符串
    String replaceAll(String regex,String replacement):
        使用给定的replacement替换此字符串所匹配给定的正则表达式的子字符串
    String replaceFirst(String regex,String replacement):
        使用给定的replacement替换此字符串匹配给定的正则表达式的第一个子字符串
  匹配：
    boolean matches(String regex):告知此字符串是否匹配给定的正则字符串
  切片：
    String[] split(String regex):根据给能的正则表达式的匹配拆分此字符串
    String[] split(String regex,int limit):根据匹配给定的正则表达式来拆分此字符串。
    做多不超过limit个，如果超过，剩下的全部都放到最后一个元素元素中
     */



    /*
boolean endsWith(String suffix):测试此字符串是否以指定的后缀结束
boolean startsWith(String prefix):测试此字符串是否以指定的前缀开始
boolean startsWith(String prefix,int toffset):测试此字符串从指定索引开始的字符串是否以指定的前缀开始


boolean contains(CharSequence s):当且仅当字符串包含指定的char值序列时，返回true
int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引
int indexOf(String str,int fromIndex)；返回指定字符串在此字符串中第一次出现处的索引，
          从指定的索引开始搜索。
int lastIndexOf(String str):返回指定字符串在此字符串的最右边处的索引
int lastIndexOf(String str，int fromIndex):返回指定字符串在此字符串中最后一次出现的索引处，
          从指定索引开始反向搜索。
      注：index和lastIndex方法如果未找到都是返回-1
     */
    @Test
    public void test3(){
        String str1 = "hello world";
        boolean b1 = str1.endsWith("ld");
        System.out.println(b1);

        boolean b2 = str1.startsWith("he");
        System.out.println(b2);

        boolean b3 = str1.startsWith("wo", 6);
        System.out.println(b3);

        String str2 = "wo";
        System.out.println(str1.contains(str2));

        System.out.println(str1.indexOf("rl"));

        System.out.println(str1.indexOf("l",4));

        System.out.println(str1.lastIndexOf("rl"));
        System.out.println(str1.lastIndexOf("l",8));
    }

    /*
int length():返回字符串长度：return value.length
char charAt(int index):  返回某索引处的字符return value[index]
boolean isEmpty():判断是否是空字符：return value.length == 0
String toLowerCase():使用默认语言环境，将String中的所有字符转换为小写
String toUpperCase():使用默认语言环境，将String中的所有字符转换为大写
String trim():返回字符串的副本，忽略前导空白和尾部空白
boolean equals(Object obj):比较字符串的内容是否相同
boolean equalsIgnoreCase(String anotherString):与equals方法类似，忽略大小写
String concat(String str):将指定字符串连接到此字符串的尾部。等价于用“+”
int compareTo(String anotherString):比较两个字符串的大小
String substring(int beginIndex):返回一个新的字符串，它是此字符串的从beginIndex开始截取到最后一个子字符串
String substring(int beginIndex，int endIndex):返回一个新的字符串，
                 它是此字符串的从beginIndex开始截取到endIndex(不包含)的一个子字符串

     */
    @Test
    public void test2(){
        String s1 = "HELLO WORLD";
        String s2 = "hello world";
        System.out.println(s1.equals(s2));
        System.out.println(s1.equalsIgnoreCase(s2));

        String s3 = "abc";
        String s4 = new String("abe");
        //负数，当前对象小，正数当前对象大，0相等
        System.out.println(s3.compareTo(s4));//涉及到字符串排序

        String s7 = "我是一个大帅哥，不能妄自菲薄";
        String s8 = s7.substring(8);
        System.out.println(s7);
        System.out.println(s8);

        String s9 = s7.substring(4, 14);
        System.out.println(s9);


    }


    @Test
    public void test1(){
        String s1 = "Hello World";
        System.out.println(s1.length());
        System.out.println(s1.charAt(0));
        System.out.println(s1.charAt(10));
//        System.out.println(s1.charAt(11));
//        s1 = "";
        System.out.println(s1.isEmpty());
        String s2 = s1.toLowerCase();
        System.out.println(s1);//S1不可变，仍然为原来的字符串
        System.out.println(s2);

        String s3 = "    he  llo  world   ";
        String s4 = s3.trim();
        System.out.println("---"+s4+"---");
        System.out.println("---"+s3+"---");

    }
}
